package org.gp953.basic.controller;

import org.gp953.basic.util.AjaxResult;
import org.gp953.basic.util.FastDfsUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {

    // 添加上传图片接口
    @PostMapping
    public AjaxResult upload(@RequestPart(required = true,value = "file")MultipartFile multipartFile){

        try {
            // 获取源文件名
            String filename = multipartFile.getOriginalFilename();
            // 获取文件后缀名
            String extName = filename.substring(filename.lastIndexOf(".") + 1);
            // 使用工具类FastDfsUtil上传图片到分布式文件系统中
            String path = FastDfsUtil.upload(multipartFile.getBytes(), extName);
            //  成功就返回一个携带图片云存储地址的AjaxResult对象
            return AjaxResult.me().setResultObj(path);
        } catch (IOException e) {
            e.printStackTrace();
            return AjaxResult.me().setMessage("系统错误请稍后再试！！").setSuccess(false);
        }

    }

    // 删除上传图片接口
    @DeleteMapping
    public AjaxResult upload(@RequestParam("path")String path){

        try {
            //前端传递过来的path不能直接作为 FastDfsUtil.delete()的参数要后端处理
            // 舍弃第一个斜杠
            path = path.substring(1);
            // 获取FastDfsUtil.delete()第一个参数,取第一个/前的group
            String group = path.substring(0, path.indexOf("/"));
            System.out.println(group);
            // 获取FastDfsUtil.delete()第二个参数，取第一个/后的文件路径名，/不要所以加一
            String fileName = path.substring(path.indexOf("/") + 1);
            System.out.println(fileName);

            // 调用FastDfsUtil中的delete方法删除云存储中的图片
            FastDfsUtil.delete(group,fileName);
            return AjaxResult.me();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setMessage("系统错误请稍后再试！！").setSuccess(false);
        }

    }
}
